models.py:
class Company(models.Model):
name = ...
def __str__(self):
return self.name
class Rate(models.Model):
company = models.ForeignKey(Company)
currency = ...
name = ...
def __str__(self):
return self.name + " " + self.currency
class Client(models.Model):
name = ...
currency = ....
company = models.ForeignKey(Company)
base_rate = models.ForeignKey(Rate)
def __str__(self):
return self.nameforms.py:
class ClientForm(forms.ModelForm):
class Meta:
model = Client
fields = (
"name",
"company",
"base_rate", )views.py:
class ClientCreateView(FormView):
template_name = "client/new_package.html"
form_class = ClientForm
success_url = reverse_lazy("home")
def form_valid(self, form):
detail = form.save(commit=False)
base_rate_id = form.cleaned_data['base_rate']
detail.currency = Rate.objects.values_list("currency", flat=True).filter(base_rate_id=base_rate_id)
detail.save()
if detail is not None:
return redirect('display_package' , detail.id)
else:
return super(ClientCreateView, self).form_valid(form)Basically, I want selected currency value to be saved in my client model from Rate model. Any help will be appreciated as from cleaned data I am getting str returned value instead of selected option id value (i.e. str from client model ).
StackOverflow Link: https://stackoverflow.com/questions/51947018/django-modelform-foreign-key-dropdown-passes-str-but-stores-fkey-id
Regards and Thanks,