すべてが突然、私はこのエラーMultipleObjectsReturned - それは2
MultipleObjectsReturnedで/のRohit /ポスト/新ポスト/
を得た後、正常に動作して返さ - 複数のContentTypeをを返さ()を取得get()は複数のContentTypeを返しました - 2を返しました!
なぜ2つのオブジェクトが返されたのか分かりません。それはちょうど1つを返すと仮定し、私は それを把握することはできません。みんな助けてここに私のコードは次のとおりです。
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からのリクエストを取得します。 –