0
我试图让自己的形式添加对象公告形式多对多对象创建
models.py:
class Announcement(models.Model):
person = models.ForeignKey('Person')
source = models.CharField(max_length=30)
date = models.DateField(default=datetime.now())
valid_date = models.DateField(null=True,blank=True)
class Person(models.Model):
names = models.ManyToManyField('Name')
birth_date = models.DateField(null=True, blank=True)
class Name(models.Model):
first_name = models.CharField(max_length=50,blank=True)
middle_name = models.CharField(max_length=50, blank=True)
last_name = models.CharField(max_length=50, blank=True)
(这也许洛斯怪异,但在我的概念,每个人都可以有不止一个名称,并且也相同名称可以被分配给不同的人)
forms.py
from django import forms
from backoffice.models import Announcement
class AnnouncementForm(forms.ModelForm):
class Meta:
model = Announcement
fields = ('person','signature','organisation','source', 'date')
而且一切都很完美,但我必须从选择框中选择Person。这是预期的行为。
但是在我的情况下,我很确定,那个人并不存在于基地(所有公告都是针对不同的人很长一段时间 - 所以我想将人员选择框更改为三个字段,并创建新人(新名字)每次我保存公告
我想我知道如何保存多到很多,这就是为什么我不把views.py,但我不知道如何设置窗体。 PY拿到领域。
我试图
class AnnouncementForm(forms.ModelForm):
class Meta:
model = Announcement
fields = ('person__names__first_name','signature','organisation','source', 'date')
,但得到Unknown field(s) (person__names__first_name) specified for Announcement
我有没有办法从许多模型中获取参数? (例如,如果我改变字段的大小,我不想检查所有地方需要修改有关这一领域custom_fields。 –
是可以的形式的东西构造函数方法设置的参数一样 高清__init __(自我,parameter_id ,* args,** kwargs): rank = Rank.objects.get(id = rank_id) queryset = Rank.objects.filter(department = rank.department) self.fields ['position'] = forms.ModelChoiceField (查询集) –