【问题标题】:Django models for astra datastax dbastra datastax db 的 Django 模型
【发布时间】:2023-01-11 11:22:53
【问题描述】:

我在 Django 上开发了一个站点。最初,我使用 Django 的默认数据库,即 Sqlite3。现在我想使用 Cassandra 的 Astra Datastax DB。我无法将 Django.dB - 模型转换为 Cassandra.cqlenengine - 列函数。

我在互联网上苦苦挣扎,没有找到可以帮助我的合适文件。

from django.db import models
from django.contrib.auth import get_user_model
from datetime import datetime
import uuid

User = get_user_model()

class Profile(models.Model):
    """docstring for Profile."""
    usr: str = models.ForeignKey(User, on_delete=models.CASCADE)
    id_usr: int = models.IntegerField()
    Fname:str = models.TextField(blank=True,null=True)
    Mname:str = models.TextField(blank=True,null=True)
    Lname:str = models.TextField(blank=True,null=True)
    Fhone:int = models.IntegerField(blank=True,null=True)
    bio: str = models.TextField(blank=True)
    img_profile = models.ImageField(
        upload_to='ProfileIMG', default="blankprofile.png")
    location: str = models.CharField(max_length=250)

    def __str__(self):
        return self.usr.username


class Post(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, unique=True)
    user: str = models.CharField(max_length=100)
    image = models.ImageField(upload_to="img_posts")
    caption: str = models.TextField(max_length=250)
    created_at = models.DateTimeField(default=datetime.now)
    Likes: int = models.IntegerField(default=0)

    def __str__(self):
        return self.user


class LikePost(models.Model):
    postid: str = models.CharField(max_length=100)
    username: str = models.CharField(max_length=100)

    def __str__(self):
        return self.username


class Followers(models.Model):
    follower: str = models.CharField(max_length=100)
    user: str = models.CharField(max_length=100)

    def __str__(self):
        return self.user

特别是,我想将其转换为 Cassandra 语言。

img_profile = models.ImageField( upload_to='ProfileIMG', default="blankprofile.png")

【问题讨论】:

    标签: django cassandra datastax-astra


    【解决方案1】:

    你要查阅的文档在这里:https://docs.datastax.com/en/developer/python-driver/3.25/api/cassandra/cqlengine/columns/

    这些是 DjangoCassandraModel 的可用列,您可以用它代替 django.db.models 来获得 Cassandra 支持的模型。您可以在此处查看使用 django_cassandra_engine 连接到 DataStax Astra 的基本示例:https://github.com/DataStax-Examples/django-cassandra-blog

    至于ImageField,我不确定这里的 Django 内部结构,但我相信它在将文件放在磁盘上指定位置(示例中的“img_posts”)后,会在数据库中存储该文件的路径。

    您可以对 Cassandra 支持的模型执行相同的操作,或者使用 Blob 列类型来存储图像数据本身。有很多文章和例子可以做到这一点。

    【讨论】:

      猜你喜欢
      • 2021-11-27
      • 2022-10-05
      • 2021-11-28
      • 2021-11-25
      • 2021-08-13
      • 2022-10-05
      • 2022-01-16
      • 2018-12-17
      • 2021-11-16
      相关资源
      最近更新 更多