django - 从字符串列表中选择作为 django 中 models.py 中的字段值
问题描述
我试图在我的版本 od D&D 中为一个字符编写一个模型,我希望用户只能从作为字典名称的字符串列表中进行选择
from django.conf import settings
from django.urls import reverse
from django.db import models
import misaka
from django.contrib.auth import get_user_model
User = get_user_model()
# Create your models here.
Races={
'Dragonborn':{'attack':13,'deffence':12,'intelligence':12,'agility':12,'wisdom':13,'charisma':13},
'Dwarf':{'attack':11,'deffence':14,'intelligence':14,'agility':10,'wisdom':15,'charisma':11},
'Elf':{'attack':10,'deffence':8,'intelligence':15,'agility':13,'wisdom':15,'charisma':14},
'Gnome':{'attack':15,'deffence':15,'intelligence':10,'agility':15,'wisdom':10,'charisma':10},
'Half-Elf':{'attack':13,'deffence':10,'intelligence':13,'agility':14,'wisdom':12,'charisma':13},
'Halfling':{'attack':12,'deffence':13,'intelligence':14,'agility':13,'wisdom':12,'charisma':11},
'Orc':{'attack':15,'deffence':15,'intelligence':11,'agility':12,'wisdom':11,'charisma':11},
'Human':{'attack':12,'deffence':12,'intelligence':13,'agility':13,'wisdom':13,'charisma':12}
}
Classes={
'Barbarian':{'attack':6,'deffence':3,'intelligence':1,'agility':4,'wisdom':1,'charisma':1},
'Bard':{'attack':2,'deffence':1,'intelligence':4,'agility':4,'wisdom':4,'charisma':4},
'Cleric':{'attack':3,'deffence':2,'intelligence':4,'agility':1,'wisdom':4,'charisma':2},
'Druid':{'attack':3,'deffence':2,'intelligence':3,'agility':2,'wisdom':3,'charisma':3},
'Fighter':{'attack':6,'deffence':3,'intelligence':1,'agility':4,'wisdom':1,'charisma':1},
'Monk':{'attack':2,'deffence':2,'intelligence':3,'agility':4,'wisdom':3,'charisma':2},
'Paladin':{'attack':5,'deffence':5,'intelligence':2,'agility':1,'wisdom':2,'charisma':1},
'Ranger':{'attack':4,'deffence':1,'intelligence':3,'agility':5,'wisdom':3,'charisma':1},
'Rogue':{'attack':5,'deffence':1,'intelligence':1,'agility':7,'wisdom':1,'charisma':1},
'Sorcerer':{'attack':2,'deffence':1,'intelligence':6,'agility':1,'wisdom':5,'charisma':1}
}
class Character(models.Model):
user=models.ForeignKey(User,related_name='characters',on_delete=models.CASCADE)
name=models.CharField(max_length=200)
#Races
#class
我如何使用“模型”。对于这样的事情?
解决方案
正确的方法是创建Races
和Classes
建模,然后从这些模型中为角色模型提供值。
class Race(models.Model):
name = ....
attack = ....
.
.
class ClassCh(model.Model):
name = ....
attack = ....
.
.
class Character(models.Model):
raceList = Race.objects.all()
classList = ClassCh.objects.all()
user=models.ForeignKey(User,related_name='characters',on_delete=models.CASCADE)
name=models.CharField(max_length=200)
race = models.ForeignKey(choices = raceList,on_delete=models.CASCADE)
classch = models.ForeignKey(choices = classList,on_delete=models.CASCADE)
您也可以避免为比赛和班级创建模型,但是您需要将字典保存为字符串
race = models.CharField(choices= RACES_LIST)
class = models.CharField(choices= CLASSES_LIST)
推荐阅读
- r - 按最近日期将特定字段提取到新列中
- java - 当类仅包含 JUnit4 注释时,使 Eclipse 默认为 JUnit4 而不是 JUnit5
- javascript - 我更改了 xaxis 的最小值和最大值,但是如何更改“导航器”?
- r - 在 dplyr 中对选定列求和(使用 select() 方法)
- sql - 查询执行慢:执行需要很长时间 => 很奇怪为什么?
- reactjs - React Hooks UseRef 问题
- r - bbmle 的 NaN 错误
- regex - JMeter:如何为此请求 URL 编写正则表达式提取器
- git - 让 Travis 构建一个分支,将分支作为子模块推送到该分支并运行脚本
- php - 快速连续 XmlHttpRequest 不起作用