首页 > 解决方案 > 如何将模型对象作为初始值传递给表单

问题描述

我想将def get_total_everything()我的函数class Order models作为初始值传递到我的表单中。但它似乎我错过了一些东西。我下面的代码会给你更多的理解。感谢期待

class PaymentForm(forms.ModelForm): 
    class Meta:
        model = Payment
        fields = ['firstname', 'lastname', 'email', 'amount']

def __init__(self, *args, **kwargs):
    self.request = kwargs.pop("request")
    super(PaymentForm, self).__init__(*args, **kwargs)
    self.fields['amount'].initial = self.amount.get_total_everything()


        #Model
    
    class Order(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    item = models.ManyToManyField(OrderItem)
    date_created = models.DateTimeField(auto_now_add=True)
    def __str__(self):
        return self.user.username

    def get_total_everything(self):
        total = 0
        for order_item in self.item.all():
            total += order_item.get_final_price()
        return total



class Payment(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    firstname = models.CharField(max_length=250) 
    lastname = models.CharField(max_length=250)
    email = models.EmailField()
    amount = models.ManyToManyField(Order)
    
    def __str__(self):
        return self.user.username

标签: pythondjango-modelsdjango-forms

解决方案


推荐阅读