У меня есть созданная модель, использующая поле «многие ко многим», а другая - «пользователь в качестве внешнего ключа», поэтому я хочу показать поле «многие ко многим» для каждого пользователя.
У меня есть модель для создания:
class Deal(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, related_name='userdeal', on_delete=models.SET_NULL)
name = models.CharField(max_length=256, null=True, blank=True)
image = models.ImageField(upload_to='images/',blank=True, null=True,)
product = models.ManyToManyField(Product,blank=True,)
store = models.ManyToManyField(Store,blank=True, )
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
discount = models.IntegerField(blank=True, null=True,)
location = models.CharField(max_length=200,blank=True, null=True,)
is_active = models.BooleanField(default=True)
toDate = models.DateTimeField(blank=True, null=True,)
fromDate = models.DateTimeField(blank=True, null=True,)
description = models.TextField(blank=True, null=True,)
price = models.IntegerField(blank=True, null=True,)
conditioned = models.TextField(blank=True, null=True,)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('Deallist', kwargs={'pk': self.pk})
view:
class DealUpdate(SuccessMessageMixin, UpdateView):
model = Deal
template_name = 'company/create_deal.html'
form_class = DealForm
success_url = reverse_lazy('Deallist')
success_message = "%(name)s was updated successfully"
def get_success_message(self, cleaned_data):
return self.success_message % dict(
cleaned_data,
name=self.object.name,
)
def form_valid(self, form):
form.instance.user = self.request.user
return super(DealUpdate, self).form_valid(form)
forms.py:
class DealForm(forms.ModelForm):
class Meta:
model = Deal
widgets = {
'name': forms.TextInput(attrs={'class': 'form-control','placeholder':'Enter Name'}),
'description': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Enter Description'}),
'price': forms.NumberInput(attrs={'class': 'form-control', 'placeholder': 'Enter Price'}),
'discount':forms.NumberInput(attrs={'class': 'form-control', 'placeholder': 'Enter Price'}),
'conditioned': forms.Textarea(attrs={'class':'form-control','placeholder':'Enter term and condition'}),
'toDate':forms.TextInput(attrs={'class': 'form-control datepicker','id':"date_timepicker_end", 'placeholder': 'Enter expire date and time'}),
'fromDate': forms.TextInput(attrs={'class': 'form-control datepicker', 'id': "date_timepicker_start",'placeholder': 'Enter start date and time '}),
}
fields = ['name','description','price','discount','toDate','fromDate','image','conditioned','product','store',]