簡體   English   中英

如何使用for循環手動將對象添加到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM