Django访问窗体中的foreignkey字段

2024-06-28 19:35:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个虚拟库应用程序(使用Django v2.1,python v3.5),任何人都应该能够访问图书目录,并通过留下一些个人信息,如姓名、姓氏、电子邮件等,请求贷款

这些是型号.py

class Profile(models.Model):
    name = models.CharField(max_length=50)
    # more fields like surname, email, phone...

class TrackBook(models.Model):
    # Somefields to keep track of date and status...
    borrower = models.ForeignKey(Profile, on_delete=models.SET_NULL, null=True, blank=True)

class Book(TrackBook):
    #info about title, author, etc.

我要做的是用我在表单中创建的概要文件实例更新图书实例的借款人

1)我尝试直接访问BookForm中的借款人字段,但它没有工作。

^{pr2}$

2)我尝试创建概要模型的inlineformset_uFactory(),但它不起作用,因为我想要实现的是在book表单中创建一个概要文件表单,而不是viceversa。所以,我所要找的不是这个例子here

也许我会想一件非常简单的事情,但我似乎找不到任何适合这个问题的解决方案。。。欢迎您提供任何帮助/建议。谢谢。


Tags: 文件django实例true应用程序表单modelmodels
1条回答
网友
1楼 · 发布于 2024-06-28 19:35:00

你需要一个基于个人资料的表格,而不是书本。然后,您的视图需要创建概要文件,然后将图书的借阅者设置为该配置文件。在

class BookProfileForm(forms.ModelForm):
    book = forms.ModelChoiceField(queryset=Book.objects.all())
    class Meta:
        model = Profile
        fields = ['name', 'address',...]

class BookRequestView(CreateView):
    template_name = 'core/book_request.html'
    model = Book
    form_class = BookProfileForm

    def form_valid(self, form):
        borrower = form.save()
        book = Book.objects.get(self.kwargs['book_id']  # or whatever is in your URL
        book.borrower = borrower
        book.save()
        return redirect(self.get_success_url())

相关问题 更多 >