Как увидеть автоматически сгенерированный первичный ключ модели и использовать его как FK в Django?
Как я знаю, модели в Django по умолчанию имеют автоматически увеличиваемый id, но я хочу видеть его в Django Administration и брать этот id для того, чтобы поместить его в другую модель, например FK
class Customer(models.Model):
customer_id = #TO BE auto incremented PRIMARY KEY
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
name = models.CharField(max_length=60)
def __str__(self):
return self.name
class Wallet(models.Model):
customer_id = #to take customer_id (by default django generate it, but how to introduce here like fk)
usd = models.FloatField(null=True)
You can use an AutoField
[Django-doc] with primary_key=True
[Django-doc]:
from django.conf import settings
class Customer(models.Model):
customer_id = AutoField(primary_key=True)
user = models.OneToOneField(
settings.AUTH_USER_MODEL, null=True, on_delete=models.CASCADE
)
name = models.CharField(max_length=60)
def __str__(self):
return self.name
class Wallet(models.Model):
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
usd = models.FloatField(null=True)
Для customer
будет создан столбец customer_id
с внешним ключом к первичному ключу таблицы appname_customer
.
В ModelAdmin
кошельке, вы можете использовать raw_id_fields
атрибут [Django-doc], чтобы использовать это для указания первичного ключа(ей):
class WalletAdmin(admin.ModelAdmin):
# …
raw_id_fields = ('customer',)