Выполнение запроса с иностранным ключом 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)