Как увидеть автоматически сгенерированный первичный ключ модели и использовать его как 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',)
Вернуться на верх