来自相关模型的Django M2M CreateView和UpdateView
我有这些模型:来自相关模型的Django M2M CreateView和UpdateView,django,python-2.7,django-forms,many-to-many,Django,Python 2.7,Django Forms,Many To Many,我有这些模型: class Company(models.Model): name = models.CharField(max_length=50, null=False, blank=False, verbose_name=ugettext_lazy(u'Name')) building = models.ForeignKey(Building, null=False, blank=False, verbose_name=ugettext_lazy(u'Building'))
class Company(models.Model):
name = models.CharField(max_length=50, null=False, blank=False, verbose_name=ugettext_lazy(u'Name'))
building = models.ForeignKey(Building, null=False, blank=False, verbose_name=ugettext_lazy(u'Building'))
parking_spaces_count = models.PositiveIntegerField(verbose_name=ugettext_lazy(u'Parking spaces count'))
def __unicode__(self):
return unicode(self.name)
class Car(models.Model):
registration_number = models.CharField(max_length=10, blank=False, null=False, verbose_name=ugettext_lazy(u'Registration number'))
def __unicode__(self):
return unicode(self.registration_number)
class Employee(models.Model):
first_name = models.CharField(max_length=50, null=False, blank=False, verbose_name=(ugettext_lazy(u'First name')))
last_name = models.CharField(max_length=50, null=False, blank=False, verbose_name=(ugettext_lazy(u'Last name')))
id_number = models.CharField(max_length=20, null=False, blank=False, verbose_name=(ugettext_lazy(u'Identification card number')))
company = models.ForeignKey(Company, null=False, blank=False, verbose_name=ugettext_lazy(u'Company'), related_name='employees')
cars = models.ManyToManyField(Car, verbose_name=ugettext_lazy(u'Cars'), related_name='owners')
def __unicode__(self):
return unicode(' '.join([self.first_name, self.last_name]))
我希望能够实施:
1-CarCreateView-在这里,我将通过提供注册号和所有者(这是员工模型中的相关字段)字段在数据库中创建汽车对象。当我尝试在这样的字段中输入“所有者”(使用Django的CreateView)时:
我收到一个错误“为汽车指定的未知字段(所有者)”
我设法用FormView模拟了它,它可以工作:
class CarCreateView(FormView):
model = Car
template_name = 'companies/cars/add.html'
form_class = CarCreateForm
success_url = reverse_lazy('companies:cars:list')
def form_valid(self, form):
employees = form.cleaned_data['owners']
registration_number = form.cleaned_data['registration_number']
car = Car(registration_number=registration_number)
car.save()
car.owners = employees
return super(CarCreateView, self).form_valid(form)
我的问题是-这是干的还是更好
2-CarEditView-在这里,我可以通过提供汽车的注册号和车主来编辑现有的汽车对象。到目前为止,我已经尝试使用FormView,但我没有取得任何成果,所以请您指导我怎么做?如果我能使用UpdateView就最好了,但我想M2M关系并不是那么简单
丹尼尔
class CarCreateView(FormView):
model = Car
template_name = 'companies/cars/add.html'
form_class = CarCreateForm
success_url = reverse_lazy('companies:cars:list')
def form_valid(self, form):
employees = form.cleaned_data['owners']
registration_number = form.cleaned_data['registration_number']
car = Car(registration_number=registration_number)
car.save()
car.owners = employees
return super(CarCreateView, self).form_valid(form)