Django - 具有从ForeignKey属性派生的字段的ModelForm

时间:2014-05-05 12:58:44

标签: django django-models django-forms

考虑以下模型

class Book(models.Model):
    name   = models.CharField(max_length=100)
    author = models.ForeignKey(Author) 

class Author(models.Model):
    name = models.CharField(max_length=50)

我想要一张表格来输入一本书&作者姓名(均为文本输入)。我不希望作者有ModelChoiceField。如果作者不存在,我将在我的视图中创建它。我可以通过declaratively defining author_name字段&像这样的max_length:

class BookForm(ModelForm):
    author_name = forms.CharField(max_length=50)

    class Meta:
        model = Book
        fields = ['name']

如何避免在BookForm中对author_name的max_length进行硬编码?我能以某种方式从链接的作者模型中推断出它吗?

2 个答案:

答案 0 :(得分:1)

参考:programmatically obtain the max_length of a Django model field

获取模型字段的max_length

您可以使用Author._meta.get_field('name').max_length

答案 1 :(得分:0)

也许你可以使用TextField

请参阅:Django CharField vs TextField

PS。如果这不是一个好主意,请不要低估我。我试图添加评论作为建议,但我没有足够的分数这样做:(