无法实现渴望和回复django之间的关系



我想为相关的渴望保存回复。如果有人发布了任何渴望,那么对该渴望的回复应该被分配给该特定的渴望。我不想在数据库中保存渴望的对象后创建用于回复的对象。对于一个渴望,有许多答案。这个回答应该与这个回答所表达的渴望有关。在下面的代码中,当我提交一个渴望时,它也会创建一个空白的回复对象。如果提交了渴望,它应该只为渴望创建对象。不回答。如果repy满足了这种渴望,那么它应该只与特定的渴望有关。使用任何关系。回复和渴望应该显示在一个单一的模板上。

views.py

@login_required
def crave_edit(request, id=None):
    instance = get_object_or_404(crave_data, pk=id) if id else None
    crave_made = None
    if instance and instance.person != request.user:
        raise PermissionDenied()
    if request.method=="POST":
        form=CraveDataForm(request.POST, request.FILES, instance=instance)
        if form.is_valid():
            crave_made = form.save(commit=False)
            crave_made.person = request.user
            crave_made.save()

    else:                    
        form=CraveDataForm(instance=instance)  
    return render(request, "crave/crave.html", {'form' : form,'crave_made':crave_made})

@login_required
def crave_view(request, id):
    #what id is this? this is crave_data id
    crave = get_object_or_404(crave_data, pk=id)
    check = comments.objects.filter(crave=crave.id)
    if request.method=="POST":
        form=CraveReplyForm(request.POST, request.FILES)
        if form.is_valid():
            reply = form.save(commit=False)
            reply.person=request.user
            reply.crave = crave
            reply.save()                    
    else:                    
        form=CraveReplyForm()  
    print "somehave"
    print id
    print "alasj"
    return render(request, "crave/comment.html", {'crave': crave, 'form' : form, 'check':check})

型号.py

class crave_data(models.Model):
    person = models.ForeignKey(User)
    post=models.TextField(blank = True,null = True)
    date= models.DateTimeField(auto_now_add=True, blank=True)
    def __unicode__(self):
        return self.post

class comments(models.Model):
    crave=models.ForeignKey(crave_data, blank = True,null = True)
    reply=models.CharField(max_length=1000, blank = True,null = True)
    date= models.DateTimeField(auto_now_add=True, blank=True)
    def __unicode__(self):
        return self.reply

请帮我一下。提前非常感谢。

您只需要crave_data-id,

在crave_edit视图中进行更改

crave_made = None

并将crave_made变量传递给模板。

和在临时

crave.html

{% if crave_made %}
                    <a href="/crave/reply_get/{{ crave_made.id }}">Continue</button>
                {% endif %}

希望这对你有帮助。

最新更新