Python Django一对一字段相关对象无文本列表

Python Django一对一字段相关对象无文本列表,python,django,Python,Django,我制作了这些模型: class Post(models.Model): title = models.CharField(max_length=50, blank=True, null=True) class OrderInfo(models.Model): post = models.OneToOneField(Post, on_delete=models.CASCADE, primary_key=True) position = models.CharField(m

我制作了这些模型:

class Post(models.Model):
    title = models.CharField(max_length=50, blank=True, null=True)

class OrderInfo(models.Model):
    post = models.OneToOneField(Post, on_delete=models.CASCADE, primary_key=True)
    position = models.CharField(max_length=50, blank=True, null=True)

@receiver(post_save, sender=Post)
def update_order_info(sender, instance, created, **kwargs):
    if created:
        OrderInfo.objects.create(post=instance)
    instance.orderinfo.save()
鉴于,

class OrderPostWriteView(FormView):
    form_class = OrderPostForm
    template_name = 'board/order/order_post_write.html'
    success_url = '/index/'

    def form_valid(self, form):
        form_class = self.get_form_class()
        form = self.get_form(form_class)

        if form.is_valid():
            post = form.save(commit=False)
            post.orderinfo.position= form.cleaned_data.get('position')

            post.save()
            return redirect('index')
        else:
            return render(self.request, 'board/order/order_post_write.html', {'form': form})
forms.py:

class OrderPostForm(forms.ModelForm):
    position = forms.CharField()
    class Meta:
        model = Post
        fields = ('title', 'position')
并返回RelatedObjectDoesNotExister错误

Post没有orderinfo

我该怎么办


(我认为Django系统正在将.orderinfo作为post的列处理..但是为什么?

您正在尝试在创建该对象之前设置相关orderinfo的属性。保存post时会触发信号,但由于使用了
commit=False
,因此明确不保存信号,因此不会触发信号

事实上,你不需要这样做。只需正常保存对象,让信号触发,然后设置位置。您不需要再次保存帖子,但需要保存orderinfo


(如果这是唯一可以创建帖子的地方,你最好完全删除信号,直接在这里创建orderinfo,包括职位,这样可以避免保存两次。)

请显示完整的回溯,该视图的其余部分,以及任何
表单。我编辑了这个问题。我解决了它,非常感谢。不假思索地效仿是错误的。