Я пытаюсь получить все счета и их данные, связанные с клиентом (например, «код клиента», «электронная почта» и т. д.).
Однако source='user.customer_code
, похоже, вообще не имеет никакого эффекта. Что мне не хватает?
Я следил за этим:
этот пост стека стека безуспешно.
Мои две модели:
class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(db_index=True, unique=True, max_length=200)
customer_code = models.CharField(max_length=300, blank=True, null=True, default=None)
class Bill(models.Model):
customer = models.ForeignKey(
User, on_delete=models.CASCADE, blank=True, null=True, related_name="customer_bill"
)
payable_amount = models.DecimalField(max_digits=10, decimal_places=2, default=0)
Просмотр:
class BillView(APIView):
def get(self, request, format=None):
q = Bill.objects.all().select_related('customer')
s = BillSerializer(q, many=True)
return JsonResponse({
"bill": s.data
})
Сериализатор:
class BillSerializer(serializers.ModelSerializer):
customer_code = serializers.CharField(source='user.customer_code', read_only=True)
class Meta:
model = Bill
fields = ('id','payable_amount','customer_code') # binding customer_code here
Текущий вывод:
"bill": [
{
"id": 1,
"payable_amount": "1000.00"
},
{
"id": 2,
"payable_amount": "2000.00"
}
]
Ожидаемый результат:
"bill": [
{
"id": 1,
"payable_amount": "1000.00",
"customer_code": "CUS10001" # want this to be attached
},
{
"id": 2,
"payable_amount": "2000.00",
"customer_code": "CUS10002" # want this to be attached
}
]
source='customer.customer_code'
? - person Crosby   schedule 07.02.2021source
связываетcustomer.customer_code
. Объяснение было бы здорово, ура! - person Mohammad Monir Hossain   schedule 08.02.2021Bill
единственным полем, связанным с вашей модельюUser
, является полеcustomer
(которое имеет атрибутcustomer_code
). - person Crosby   schedule 08.02.2021