У меня проблема с получением значения параметра ForeignKey по умолчанию равным нулю, он продолжает сообщать мне, что поле является обязательным, или, если я попробую другую итерацию, он будет жаловаться, что поле не может быть пустым.
Яне знаю, что я делаю неправильно, но мне нужно, чтобы значение ForeignKey по умолчанию было равно нулю, если оно равно нулю.
Я экспериментирую с идеей удерживать все контракты между несколькими различными субъектами (т. е. компаниями и сотрудниками, компаниями).и спонсоры и т. д., компании и поставщики и т. д.).
Все отношения работают, однако мои заявления ForeignKey не позволяют мне использовать значение по умолчанию 0 (ноль).
# relationships
# Only the company field should be required, the others are optional
# This is so you can link a company with either a sponsor OR a worker
#
sponsor = models.ForeignKey('Sponsor', null=True, default=0, blank=False)
company = models.ForeignKey('Company')
worker = models.ForeignKey('Worker', null=False, default=0, blank=False)
# possible future relationships (not implemented)
#suppliers = models.ForeignKey('Supplier', null=True, default=0, blank=False)
В идеале мне бы хотелось, чтобы требовалось только поле компании, а остальные были сугубо необязательными и по умолчанию имели значение ноль.
Идея состоит в том, чтобы иметь 1 таблицу для управления / управления всеми контрактами между различными организациями..
Pseduocode
Контракты;id = 1 |company_id = 1 |спонсор_ид = 0 |worker_id = 1 |длина = 10 |salary = 10000
// etc
Я пробовал следующие итерации.
# models.ForeignKey('Sponsor', null=False, default=0, blank=True) # This makes the field required
# models.ForeignKey('Sponsor', null=True, default=0, blank=True) # This complains that "Contracts.sponsor" does not allow null values.
Любые указатели о том, как заставить ForeignKey использовать значение по умолчаниюбудет принята с благодарностью.
Большое спасибо.
Редактировать.Добавление кода, вызывающего ошибки;Это урезанная версия кода.
// company.py
class Company(models.Model):
"""(Company description)"""
sponsorContracts = models.ManyToManyField('Sponsor', through='Contracts', db_column='sponsor_id')
employees = models.ManyToManyField('Worker', through='Contracts', db_column='worker_id')
// contracts.py
class Contracts(models.Model):
"""(Contracts description)"""
# relationships
sponsor = models.ForeignKey('Sponsor', null=True, default=0, blank=True)
company = models.ForeignKey('Company')
worker = models.ForeignKey('Worker', null=False, default=0, blank=False)
// worker.py
class Worker(models.Model):
"""(A list of employees)"""
employer = models.ManyToManyField('Company', through='Contracts', db_column='company_id')
// sponsor.py
class Sponsor(models.Model):
"""(A list of sponsors)"""
sponsorContracts = models.ManyToManyField('Company', through='SponsorContracts')