У меня есть две таблицы: Адрес доставки и Счет-фактура таблица, связанная через ForeignKey
. Я создал файл сигналов, который автоматически создает экземпляр Invoice всякий раз, когда создается новый экземпляр ShippingAddress .
Моя проблема в том, что я не могу напрямую добавить новый Invoice экземпляр, используя имя строки, а не идентификатор ForeignKey, без получения ошибки
"shipping_address": ["Неверный тип. Ожидаемое значение pk, полученная строка." ]
Как мне go использовать строковое имя поля shipping_address
из таблицы Invoice при сохранении связи между двумя таблицами.
Адрес доставки модель
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 Invoice(models.Model):
shipping_address = models.ForeignKey(ShippingAddress, on_delete=models.CASCADE, related_name="ship_address_name")
invoice_id = models.CharField(max_length=50, unique=True, default=increment_invoice_number)
product = models.CharField(max_length=50, blank=True)
date = models.DateField(default=datetime.date.today)
def __str__(self):
return self.shipping_address.name
сигнал файл
@receiver(post_save, sender=ShippingAddress)
def create_invoice(sender, instance, created, **kwargs):
if created:
Invoice.objects.create(shipping_address=instance)
views.py файл
class InvoiceListCreateView(ListCreateAPIView):
serializer_class = InvoiceSerializer
queryset = Invoice.objects.all().order_by('-date')