如何在Django中同时在两个不同的数据库表中插入值?

时间:2019-06-04 09:43:50

标签: django django-models django-queryset

我在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中编写什么查询/函数,以便两个表都同步化。

1 个答案:

答案 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...
)
相关问题