Я в настоящее время предоставляет выбор в раскрывающемся списке в модели, как это:Джанго падение падение в модели
class FoodType(models.Model):
type = models.CharField(max_length=30, unique=True)
def __unicode__(self):
return self.type
class Food(models.Model):
name = models.CharField(max_length=30, unique=True)
type = models.ForeignKey(FoodType)
def __unicode__(self):
return self.name
Я сделал это так, а не закодированный выбор, потому что я хочу, чтобы обеспечить возможность добавления/удаление/change FoodTypes через администратора после развертывания приложения. Но потом я понял, что если FoodType будет удален из-за того, что еда зависит от, Food также удаляется, чего я не хочу. Я хочу иметь возможность хранить все записи Food, если я явно не хочу их удалить.
Есть ли лучший способ сделать это, который по-прежнему позволяет пользователю изменять FoodTypes через администратора?
Спасибо :)
ОК спасибо, что выглядит как то, что я после. Я также думал, что могу это сделать, всегда сохраняя FoodTypes, но устанавливая 'is_deleted = models.BooleanField (default = False)', чтобы я мог настроить раскрывающееся меню, чтобы заполнить выпадающее меню Foodtype, где 'is_deleted = False '... не уверен, будет ли это хорошей практикой, хотя модель FoodTypes может запутаться? – DrBuck
Действительно, «мягкое удаление» - это другое решение, это, вероятно, более эффективная практика, но немного сложнее реализовать. Существуют [Django apps] (https://www.djangopackages.com/grids/g/deletion/), которые предоставляют его, но я никогда не использовал их самостоятельно, также есть много статей по этому вопросу. – aumo
Я собираюсь попробовать и реализовать это решение, но спасибо, что привлек внимание 'on_delete', это определенно будет полезно для других приложений! – DrBuck