Как установить все доступные значения одной модели в другую модель в django?
У меня есть следующий код
class Version(models.Model):
version = CharFeild
version_url = UrlField
class MyModel(models.Model):
name = CharFeild
default_version = OnetoOneField(Version)
available_versions = ForeignKeyField(Version)
я застреваю на выборе доступной версии, я могу выбрать только одну, где я хочу выбрать все доступные или все те, которые мне нужны.
Вы можете использовать ForeignKey.related_name, как сказано в документации Django, это поможет вам
вы можете использовать его следующим образом
class Version(models.Model):
version = CharFeild
version_url = UrlField
class MyModel(models.Model):
name = CharFeild
default_version = OnetoOneField(Version)
available_versions = ForeignKeyField(Version, related_name='model')
И вы можете использовать его так
version = Version.objects.get(version="1.1.0")
models = version.model.all()
Также проверьте этот вопрос и этот вопрос
ForeignKeyField относится к одному Version из MyModel
Вы неправильно понимаете назначение внешних ключей. Ваш MyModel должен быть родителем для всех Version, которые используются как available_versions, что означает, что у вас должна быть одна модель родителя от ребенка, поэтому ваш родитель будет иметь несколько детей, а дети будут иметь только одного родителя. Это означает, что вы должны использовать ForeignKeyField внутри Versions
class Version(models.Model):
version = CharFeild
version_url = UrlField
model = ForeignKey('MyModel', on_delete=models.CASCADE, related_name='available_versions', null=True, blank=True)
class MyModel(models.Model):
name = CharFeild
default_version = OnetoOneField(Version, related_name='default_model')
Я не уверен, что не будет никаких related_names столкновений (так как это немного причудливо), но я думаю, вы поняли суть