将空白对象传递给自我实例模型

时间:2015-12-25 05:07:15

标签: python django django-models django-forms

我希望在通过Django中的from进入时,模型的父类别为空/ null。是否可以通过空白表单传递空值?

这是我的models.py

from django.db import models

class Category(models.Model):
    category_name = models.CharField(max_length=300)
    category_code = models.CharField(max_length=100)
    category_parent = models.ForeignKey('self', blank=True, null=True)
    category_image = models.ImageField(upload_to='category')

    def __str__(self):
        return self.category_name

并且forms.py

from django import forms
from backend.models import Category


class CategoryForm(forms.ModelForm):
    category_parent = forms.ModelChoiceField(
        queryset=Category.objects.all(), empty_label='None')
    category_image = forms.ImageField()

    class Meta:
        model = Category
        fields = ('category_name', 'category_code',)

如果没有选择任何内容,我想为父选择字段设置一个空值。或者,如果我输入类别中的第一个值,则在没有父项时应该指向null。

1 个答案:

答案 0 :(得分:1)

我希望我能做到这一点,但我猜测即使将empty_label设置为None,您仍然会看到所选列表中的第一个类别。

当您覆盖ModelForm字段时,就像现在对category_parent所做的那样,您会丢失模型中required=False的自动连接的blank=True表单对应方。

尝试将required=False添加到表单字段,如下所示:

category_parent = forms.ModelChoiceField(queryset=Category.objects.all(), empty_label='None', required=False)
相关问题