Как добавить значение по умолчанию в queryset? - PullRequest
0 голосов
/ 24 января 2020

У меня есть moneybook, модели moneylog

и moneylog получают связь с moneybook manytomany.

moneybook = models.ForeignKey(
    moneybook_models.Moneybook, on_delete=models.CASCADE)
pay_day = models.DateTimeField(default=NOW)
payer = models.ForeignKey(
    user_models.User, on_delete=models.CASCADE, related_name="payer")
dutch_payer = models.ManyToManyField(
    user_models.User, related_name="dutch_payer", blank=True)
price = models.IntegerField()
category = models.CharField(max_length=10)
memo = models.TextField()

Я хочу сохранить сохранение по умолчанию в dutch_payer, если пользователь выберет или нет.

и это мои forms.py

class CreateMoneylogForm(forms.ModelForm):
    class Meta:
        model = models.Moneylog
        fields = (
            "pay_day",
            "payer",
            "dutch_payer",
            "price",
            "category",
            "memo",
        )
        widgets = {
            "dutch_payer": forms.CheckboxSelectMultiple
        }

    def save(self, *args, **kwargs):
        moneylog = super().save(commit=False)
        return moneylog

views.py

class moneylog_create(FormView):

    form_class = forms.CreateMoneylogForm
    template_name = "moneylogs/create.html"

    def form_valid(self, form):
        moneylog = form.save()
        moneybook = moneybook_models.Moneybook.objects.get(
            pk=self.kwargs["pk"])
        form.instance.moneybook = moneybook
        if moneylog.payer not in moneylog.dutch_payer.all():
            moneylog.dutch_payer.add(moneylog.payer)
        moneylog.save()
        form.save_m2m()
        return redirect(reverse("cores:home"))

, как вы видите.

    if moneylog.payer not in moneylog.dutch_payer.all():
        moneylog.dutch_payer.add(moneylog.payer)
    moneylog.save()
    form.save_m2m()
    return redirect(reverse("cores:home"))

это не работает. (В dutch_payer нет плательщика) как я могу этого достичь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...