모든 것이 갑자기 내가이 오류MultipleObjectsReturned - 그것은 2
MultipleObjectsReturned에서/rohit/후/새로운 포스트/
있어 다음 잘 작동되었다 반환 - 하나 이상의 ContentType을 반환() 수get()이 두 개 이상의 ContentType을 반환했습니다. - 2를 반환했습니다!
왜 2 개의 개체를 반환했는지 알 수 없습니다. 그것은 단지 하나를 반환하고 난 수 없다고 생각합니다. 알아낼 수 있습니다. 도와 줘.
이models.py :
class Comment(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
parent = models.ForeignKey("self", null=True, blank=True)
content = models.TextField()
timestamp = models.DateTimeField(auto_now_add=True)
objects = CommentManager()
class Meta:
ordering = ['timestamp']
def __unicode__(self):
return str(self.user.username)
def __str__(self):
return str(self.user.username)
def get_absolute_url(self):
return reverse("comments:thread", kwargs={"id": self.id})
def get_delete_url(self):
return reverse("comments:delete", kwargs={"id": self.id})
def children(self): #replies
return Comment.objects.filter(parent=self)
@property
def is_parent(self):
if self.parent is not None:
return False
return True
Views.py :
instance = get_object_or_404(Post, slug = slug)
initial_data = {
"content_type": instance.get_content_type,
"object_id": instance.id
}
print(initial_data)
form = CommentForm(request.POST or None, initial= initial_data)
if form.is_valid() and request.user.is_authenticated():
c_type = form.cleaned_data.get("content_type")
print('c_type : ',c_type)
content_type = ContentType.objects.get(model=c_type)
print(content_type)
obj_id = form.cleaned_data.get('object_id')
content_data = form.cleaned_data.get("content")
parent_obj = None
try:
parent_id = int(request.POST.get("parent_id"))
except:
parent_id = None
if parent_id:
parent_qs = Comment.objects.filter(id=parent_id)
if parent_qs.exists() and parent_qs.count() == 1:
parent_obj = parent_qs.first()
new_comment, created = Comment.objects.get_or_create(
user = request.user,
content_type= content_type,
object_id = obj_id,
content = content_data,
parent = parent_obj,
)
Forms.py : 디버깅 할 경우
class CommentForm(forms.Form):
content_type = forms.CharField(widget=forms.HiddenInput)
object_id = forms.IntegerField(widget=forms.HiddenInput)
#parent_id = forms.IntegerField(widget=forms.HiddenInput, required=False)
content = forms.CharField(label='',widget=forms.Textarea(attrs={'class':"mdl-textfield__input",'type':"text", 'rows':"3", 'id':"sample5"}))
글쎄,'ContentType.objects.get (model = c_type)'은 분명히 하나 이상의 콘텐츠 유형을 반환합니다. –
동일한 검색에 대해 두 개 이상의 항목이있는 db로부터 요청을 가져옵니다. –