Выполнение запроса с иностранным ключом django

Я новичок в django и у меня есть две модели django. Теперь я пытаюсь запросить стрип во второй модели (GenerateKeys), которая имеет Stripe в качестве внешнего ключа, и я делаю это следующим образом "

".

stripe.stripe_customer.all()

", чтобы я мог получить индивидуальные данные от каждого пользователя в модели Stripe и использовать их в модели Generateakeys. Но я продолжаю получать эту ошибку ниже

AttributeError: объект 'QuerySet' не имеет атрибута 'stripe_customer'

class Stripe(models.Model):
      user = models.OneToOneField(to=User, on_delete=models.CASCADE)
      CustomerId = models.CharField(max_length=255)

class GenerateKeys(models.Model):
    stripe = models.ForeignKey(Stripe,on_delete=models.CASCADE,related_name='stripe_customer')
    key_sha = models.CharField(max_length=255)

Спасибо.

Вы получаете ошибку атрибута, потому что пытаетесь получить доступ к переменным экземпляра из набора queryset.

Сначала получите свой экземпляр, ради примера я сделаю это проще.

Вероятно, вы хотите использовать некоторые параметры для получения экземпляра.

instance = stripe.first() # Get the first item in the queryset
customers = instance.stripe_customer.all()

Если вы хотите получить отдельные данные each модели; пройдитесь циклом по набору запросов.

Если модель GenerateKeys уже имеет экземпляр, вы можете использовать аннотации, чтобы получить необходимые данные для каждого клиента.

Пример:

qs_annotated = GenerateKeys.objects.all()\
    .annotate(non_existant_field=models.F('stripe__user__username'))

И затем вы можете получить к нему доступ следующим образом:

for inst in qs_annotated:
    print(inst.non_existant_field)
Вернуться на верх