Ваш первичный ключ - это не строка, а целое число.
username = models.OneToOneField(Person, primary_key=True)
username
здесь это не CharField
, а OneToOneField
, что означает отношение кPerson
объектная модель, означающая поле, содержащее идентификатор строки этого экземпляра лица в таблице персонала.
Вы можете переименовать ее следующим образом:
person = models.OneToOneField(Person, primary_key=True)
Ипредполагая, что ваш объект Person
имеет атрибут username
, вы можете удалить свой персонал следующим образом:
s = Staff.objects.get(person__username='lacc1').delete()
Однако вы должны знать, что это означает JOIN
в поле person_id
ифильтр в поле Staff username
, который, вероятно, не проиндексирован.Это будет медленнее, чем вы ожидали, но я сомневаюсь, что это вызовет какие-то проблемы.