[英]How to add objects to a different model when using a form in Django?
[英]How to manually add objects to a Django model using a for loop?
对Python而言相对较新,而对Django而言则相对较新,因此需要一些帮助。
我正在尝试创建一个与角色扮演游戏中类似的用户升级系统(即,用户通过获得经验值来获得等级)
到目前为止,我在我的项目中有一个应用程序,该应用程序的models.py中包含此简单模型。 我已经进行了迁移,并且此当前为空的表位于我的数据库中:
class UserLevel(models.Model):
level_rank = models.IntegerField()
xp_threshold = models.IntegerField()
现在我要做的是将级别1到100(整数)添加到level_rank。 因此,将有100个实例。 最高等级为100。
另外,xp_threshold将每级增加50%。
因此,例如,级别1的xp_threshold为100,级别2的值为150,级别3的值为225,依此类推。
我不在乎数字如何取整。
我正在使用Django v2.0.13
到目前为止,我有这个:
class UserLevel(models.Model):
level_rank = models.IntegerField()
xp_threshold = models.IntegerField()
levels_range = range(1,101)
for level in levels_range:
UserLevel.objects.create(level_rank=level)
但这给了我一个NameError,说UserLevel没有定义。
我知道我可以手动将这些数据泵送到Django的管理员中,但是要花100个级别才能花费很长时间,而且我知道有一个更好的方法。
有任何想法吗?
谢谢!
这是关于Python而不是Django。 简而言之,您无法在Python中做到这一点
class MyAwesomeClass:
a = 1
print(a)
print(MyAwesomeClass.a)
这将在第4行上抛出NameError
而是使用shell创建数据,例如python manage.py shell
from yourapp.models import UserLevel
UserLevel.objects.bulk_create([UserLevel(level_rank=level) for level in range(1, 101)])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.