Django: нулевое значение в столбце "shipping_address_owner_id" нарушает ограничение на ненулевое значение. - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь добавить новую запись в таблицу модели своего счета, но все равно получаю сообщение error

IntegrityError нулевое значение в столбце " shipping_address_owner_id "нарушает ограничение not-null

Я предполагаю, что это столбец shipping_address_owner, который использует ForeignKey , который связывает его со второй таблицей с именем ShippingAddress.

Я пытаюсь добавить следующую запись в свою таблицу моделей paymentInvoice, но получаю указанную выше ошибку

{
    "shipping_address_owner": "Becky",
    "product": [
        "Sepit"
    ],    
    "quantity": 1,
    "payment_made": "2600.00"
}

Ниже мой счет-фактура таблица моделей

class paymentInvoice(models.Model):

    shipping_address_owner = models.ForeignKey(ShippingAddress, on_delete=models.CASCADE, related_name="customer_invoice")
    product = models.ManyToManyField(Product, related_name='product_invoice')
    date = models.DateField(default=datetime.now)
    invoice_id = models.CharField(max_length=50, unique=True, default=increment_invoice_number)
    quantity = models.PositiveSmallIntegerField()
    payment_made = models.DecimalField(max_digits=20, decimal_places=2)

    def __str__(self):
        return self.shipping_address_owner.customer.name

Мой Адрес доставки модель

class ShippingAddress(models.Model):
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE, related_name="customer_ship_address")
    address = models.CharField(max_length=50, blank=True)
    zip_code = models.CharField(max_length=12, blank=True)

    def __str__(self):
        return self.customer.name

Мой сериализатор файл

class paymentInvoiceSerializer(serializers.ModelSerializer):

    product = serializers.SerializerMethodField()
    shipping_address_owner = serializers.SerializerMethodField()

    class Meta:
        model = paymentInvoice
        fields = '__all__'

   def get_shipping_address_owner(self, instance):
        return instance.shipping_address_owner.customer.name

    def get_product(self, instance):
        names = []
        for product in instance.product.all(): # get all products field
            names.append(product.name) # append the product name
        return names
...