相关疑难解决方法(0)

如何在Django中向ModelForm添加外键字段?

我想要做的是显示一个让用户:

  • 输入文档标题(来自Document型号)
  • user_defined_code从下拉列表中选择其中一个选项(由UserDefinedCode模型填充)
  • 输入a unique_code(存储在Code模型中)

我不知道如何在表单中显示外键关系的字段.我知道在视图中你可以使用document.code_set(例如)来访问当前document对象的相关对象,但我不知道如何将它应用于ModelForm.

我的模特:

class UserDefinedCode(models.Model):
    name = models.CharField(max_length=8)
    owner = models.ForeignKey(User)

class Code(models.Model):
    user_defined_code = models.ForeignKey(UserDefinedCode)
    unique_code = models.CharField(max_length=15)

class Document(models.Model):
    title = models.CharField(blank=True, null=True, max_length=200)
    code = models.ForeignKey(Code)
    active = models.BooleanField(default=True)
Run Code Online (Sandbox Code Playgroud)

我的ModelForm

class DocumentForm(ModelForm):
    class Meta:
        model = Document
Run Code Online (Sandbox Code Playgroud)

django foreign-keys django-models django-forms

21
推荐指数
1
解决办法
4万
查看次数

Django - 显示ModelForm外键字段

型号和表格

class Book(models.Model):
  author = models.ForeignKey(User)
  name = models.CharField(max_length=50)

class BookForm(forms.ModelForm):
  class Meta:
    model = Book
    widgets = {
      'author': forms.HiddenInput(),
    }
Run Code Online (Sandbox Code Playgroud)

本书形式不允许更改作者

模板

但我想显示他的名字

<form action="/books/edit" method="post">{% csrf_token %}
  {{ form.author.label }}: {{ form.author.select_related.first_name }}
  {{ form.as_p }}
</form>
Run Code Online (Sandbox Code Playgroud)

当然form.author.select_related.first_name不行

如何显示作者的名字?

django django-models django-forms

6
推荐指数
1
解决办法
7227
查看次数