Как я могу сделать multiselect в выпадающем списке в админке django на данных foreignkey, подобно manytomanyfield?
models.py
from django.db import models
class Images(models.Model):
def upload_path(instance, filename):
return '/images/'.join([filename])
image = models.ImageField(upload_to=upload_path, blank=True, null=True)
logits = models.BinaryField()
#customer = models.ForeignKey(Customer ,on_delete=models.DO_NOTHING, default=None)
class Customer(models.Model):
customer_id = models.BigIntegerField(unique=True)
first_name = models.CharField(max_length=300)
last_name = models.CharField(max_length=300)
images = models.ForeignKey(Images ,on_delete=models.DO_NOTHING, default=None)
def __str__(self):
return str(self.customer_id)
Моя проблема в том, что я хочу иметь возможность назначать несколько изображений одному пользователю, что должно быть возможно из-за ForeignKey, но я не могу заставить его работать таким образом.
Мне нужно поле multiselect, как в manytomanyfield, но в поле foreignkey.
Моя проблема в том, что [я] хочу иметь возможность назначать несколько изображений [одному] пользователю, что должно быть возможно из-за
ForeignKey, но [я] не могу заставить его работать так.
Нет: ForeignKey - это отношение "многие-к-одному": это означает, что многие Customer могут ссылаться на один и тот же, возможно, единственный Images. Если вы хотите использовать несколько Image, то вам нужно написать ForeignKey в обратном направлении, так:
from django.db import models
class Image(models.Model):
def upload_path(instance, filename):
return f'/images/{filename}'
image = models.ImageField(upload_to=upload_path, blank=True, null=True)
logits = models.BinaryField()
customer = models.ForeignKey(
'Customer',
on_delete=models.SET_NULL,
null=True,
related_name='images'
)
class Customer(models.Model):
customer_id = models.BigIntegerField(unique=True)
first_name = models.CharField(max_length=300)
last_name = models.CharField(max_length=300)
def __str__(self):
return f'{self.customer_id}'