首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从字符串列表中选择作为django中models.py中的字段值

从字符串列表中选择作为django中models.py中的字段值
EN

Stack Overflow用户
提问于 2021-02-07 09:34:04
回答 1查看 22关注 0票数 0

我正在尝试为我的D&D版本中的一个字符写一个模型,我希望用户只能从字符串列表中选择,这将是字典的名称

代码语言:javascript
复制
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

我该如何使用“模型”。为了这样的事情?

EN

回答 1

Stack Overflow用户

发布于 2021-02-07 15:55:14

正确的方法是创建RacesClasses模型,然后为角色模型提供这些模型的值。

代码语言:javascript
复制
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)

您也可以避免为比赛和班级创建模型,但是您需要将字典保存为字符串

代码语言:javascript
复制
race = models.CharField(choices= RACES_LIST)
class = models.CharField(choices= CLASSES_LIST)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66083719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档