我在做一个游戏。玩家的库存中有武器。武器是武器模型的实例。创建新武器时,将从模板模型实例中随机选择一个武器模板。然后复制所有字段以创建武器实例。为此,我使用以下函数:
class ItemModel(models.Model):
def fromTemplate(self, templateInstance):
if issubclass(type(self), type(templateInstance)):
for field in templateInstance._meta.fields:
setattr(self, str(field.name), getattr(templateInstance, field.name))
self.pk = None
self.save()
for m2mField in templateInstance._meta.many_to_many:
setattr(self, m2mField.name, getattr(templateInstance, m2mField.name).all())
class Meta:
abstract = True
以下是模型定义:
^{pr2}$现在我的问题是“fromTemplate”函数还在模板模型中添加了一个新实例。所以当我这样做的时候:
randomWeaponTemplate = random.choice(WeaponTemplate.objects.all())
newWeapon = Weapon()
newWeapon.fromTemplate(randomWeaponTemplate)
newWEapon.save()
我在weaotemplate表中看到一个新条目。我应该如何修改代码使这两个模型独立存储,以便在从weaponTemplate创建新武器时,不会对weaponTemplate表进行添加?在
我认为你不应该在武器和武器之间使用继承,django将继承视为一对一的关系。如果你想让你的代码更枯燥,你可以试着这样做:
相关问题 更多 >
编程相关推荐