Из документации get_or_create :
# get_or_create() a person with similar first names.
p, created = Person.objects.get_or_create(
first_name='John',
last_name='Lennon',
defaults={'birthday': date(1940, 10, 9)},
)
# get_or_create() didn't have to create an object.
>>> created
False
Пояснение:
Поля, которые должны оцениваться на сходство, должны быть указаны за пределами defaults
. Остальные поля должны быть включены в defaults
. В случае возникновения события CREATE учитываются все поля.
Похоже, вам нужно возвращаться в кортеж, а не в одну переменную, сделайте так:
customer.source,created = Source.objects.get_or_create(name="Website")