我在Django中有两个模型类。我想使用CSV文件同时在模型中插入值。
两个模型是User和User_Stats。 User_stats具有来自User的外键。我想将.csv文件中的某些行插入到User中,并将某些行插入到User_stats中。我不确定该怎么做。
class User(models.Model):
full_name = models.CharField('Full Name',max_length=100)
username = models.CharField('Username',max_length=100,unique=True)
photo = models.ImageField(upload_to = 'photos/%Y/%m/%d/',blank=True)
email_id = models.EmailField('Email Id',blank=True)
class User_Statistics(models.Model):
username = models.ForeignKey(User,on_delete=models.CASCADE)
total_posts = models.PositiveIntegerField('Total Posts')
followers = models.PositiveIntegerField('Followers')
following = models.PositiveIntegerField('Following')
def write_to_db(file):
with open(str(file),encoding='utf-8') as csvfile:
csvreader = csv.reader(csvfile)
next(csvreader,None)
for row in csvreader:
_,created = User.objects.get_or_create(
full_name = row[0],
username = row[1],
email_id = row[2],
external_url = row[8],
brands_worked_with =
_,stats = User_Statistics.objects.get_or_create(
username =User.objects.get() )
我应该在User_Statistics中编写什么查询/函数,以便两个表都同步化。
答案 0 :(得分:0)
get_or_create()
返回一个元组:
返回(对象,已创建)的元组,其中object是所检索到的或 创建的对象,创建的是一个布尔值,指定是否要 对象已创建。
,但是您似乎忽略了返回的对象(通过使用_
)。相反,您可能要使用返回的对象,并在随后的User_Statistics
对象创建中引用它。即:
user, created = User.objects.get_or_create(...)
stats, created = User_Statistics.objects.get_or_create(
username=user,
...other properties...
)