我想創建一個表格,允許我從這些模型分配服務的供應商。由於我使用其他程序使用的數據庫,因此沒有定義M2M關係,因此似乎無法對其進行更改。我也可能是錯的。M2M使用通過和與多個複選框形式
class Service(models.Model):
name = models.CharField(max_length=30L, blank=True)
class ServiceUser(models.Model):
service = models.ForeignKey(Service, null=False, blank=False)
contact = models.ForeignKey(Contact, null=False, blank=False)
class SupplierPrice(models.Model):
service_user = models.ForeignKey('ServiceUser')
price_type = models.IntegerField(choices=PRICE_TYPES)
price = models.DecimalField(max_digits=10, decimal_places=4)
我建立這種形式:
class SupplierServiceForm(ModelForm):
class Meta:
services = ModelMultipleChoiceField(queryset=Service.objects.all())
model = ServiceUser
widgets = {
'service': CheckboxSelectMultiple(),
'contact': HiddenInput(),
}
這裏是我開始工作就沒有任何成功的觀點:
class SupplierServiceUpdateView(FormActionMixin, TemplateView):
def get_context_data(self, **kwargs):
supplier = Contact.objects.get(pk=self.kwargs.get('pk'))
service_user = ServiceUser.objects.filter(contact=supplier)
form = SupplierServiceForm(instance=service_user)
return {'form': form}
我有一種感覺,什麼是錯的我試圖去做的方式。我有一個正確的表單顯示,但它沒有與聯繫人實例化,即使供應商已經在service_user中有一些條目,也不檢查複選框。
它顯示旁邊的複選框列表與服務一個新的多個字段的選擇。如果我試圖instanciate與查詢service_user它抱怨queryset沒有屬性__meta__無論如何,我不想多選擇字段,但複選框。 – 2014-12-01 18:58:05
你的意思是我可以通過定義類似的東西來處理:service_user = models.ManyToManyField(ServiceUser)或service_user = models.ManyToManyField(Service)?如果不破壞數據,我可以嘗試。 – 2014-12-01 21:13:46
這是一個與原來無關的新領域。正如前面提到的,唯一的問題是你添加到該字段中的任何內容都不能從應用程序的舊版本訪問。 – cdvv7788 2014-12-01 21:20:07